package com.ruoyi.system.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 储值卡对象 stored_value_card
 *
 * @author ruoyi
 * @date 2025-05-22
 */
public class StoredValueCard extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键ID，唯一标识每张储值卡 */
    private Long id;

    /** 储值卡名称（如“尊享VIP卡”“生日特权卡”） */
    @Excel(name = "储值卡名称", readConverterExp = "如=“尊享VIP卡”“生日特权卡”")
    private String cardName;

    /** 储值卡编号（唯一标识，如SVC20230001，可包含前缀+日期+流水号） */
    @Excel(name = "储值卡编号", readConverterExp = "唯=一标识，如SVC20230001，可包含前缀+日期+流水号")
    private String cardCode;

    /** 储值卡类型（如“充值卡”“折扣卡”“会员专享卡”，用于业务分类） */
    @Excel(name = "储值卡类型", readConverterExp = "如=“充值卡”“折扣卡”“会员专享卡”，用于业务分类")
    private String cardType;

    /** 参与桌台分类（JSON数组，记录允许使用该储值卡的桌台分类ID，如["T001","T002"]） */
    @Excel(name = "参与桌台分类", readConverterExp = "J=SON数组，记录允许使用该储值卡的桌台分类ID")
    private String tableCategoryIds;

    /** 是否默认会员储值卡（1=是，0=否，用于标识是否作为会员默认绑定卡） */
    @Excel(name = "是否默认会员储值卡", readConverterExp = "1==是，0=否，用于标识是否作为会员默认绑定卡")
    private Integer isDefaultMemberCard;

    /** 已办卡数量（记录当前储值卡类型的累计发卡数量） */
    @Excel(name = "已办卡数量", readConverterExp = "记=录当前储值卡类型的累计发卡数量")
    private Long issuedCardCount;

    /** 使用规则（JSON格式，记录储值卡的使用限制，如每日/月使用次数、时段限制等） */
    @Excel(name = "使用规则", readConverterExp = "J=SON格式，记录储值卡的使用限制，如每日/月使用次数、时段限制等")
    private String usageRules;

    /** 积分规则（JSON格式，记录储值卡消费的积分计算规则，如1元=1积分、积分有效期等） */
    @Excel(name = "积分规则", readConverterExp = "J=SON格式，记录储值卡消费的积分计算规则，如1元=1积分、积分有效期等")
    private String pointsRules;

    /** 有效期（格式如“365天”“2024-12-31”，支持固定时长或截止日期） */
    @Excel(name = "有效期", readConverterExp = "格=式如“365天”“2024-12-31”，支持固定时长或截止日期")
    private String validityPeriod;

    /** 备注说明（记录储值卡的特殊说明或业务背景） */
    @Excel(name = "备注说明", readConverterExp = "记=录储值卡的特殊说明或业务背景")
    private String remarks;

    /** 充值规则（JSON格式，记录储值卡的充值档位、赠送规则等，如“充1000送100”） */
    @Excel(name = "充值规则", readConverterExp = "J=SON格式，记录储值卡的充值档位、赠送规则等，如“充1000送100”")
    private String rechargeRules;

    /** 储值卡可用范围（JSON格式，记录可使用的门店、区域、业务线等，如["BJ-001","SH-002"]） */
    @Excel(name = "储值卡可用范围", readConverterExp = "J=SON格式，记录可使用的门店、区域、业务线等")
    private String availableScope;

    /** 赠送金额可用范围（JSON格式，记录赠送金额可使用的商品分类、服务类型等，如["FOOD","DRINK"]） */
    @Excel(name = "赠送金额可用范围", readConverterExp = "J=SON格式，记录赠送金额可使用的商品分类、服务类型等")
    private String bonusAmountScope;

    /** 不参与商品（JSON数组，记录储值卡不可用于支付的商品ID列表，如["PROD-001","PROD-002"]） */
    @Excel(name = "不参与商品", readConverterExp = "J=SON数组，记录储值卡不可用于支付的商品ID列表")
    private String excludedProducts;

    /** 不参与套餐商品（JSON数组，记录储值卡不可用于支付的套餐ID列表，如["COMBO-001"]） */
    @Excel(name = "不参与套餐商品", readConverterExp = "J=SON数组，记录储值卡不可用于支付的套餐ID列表")
    private String excludedComboProducts;

    /** 参与员工服务计费（1=是，0=否，用于标识是否计算员工服务提成） */
    @Excel(name = "参与员工服务计费", readConverterExp = "1==是，0=否，用于标识是否计算员工服务提成")
    private Integer includeEmployeeServiceFee;

    /** 参与设备服务计费（1=是，0=否，用于标识是否计算设备使用费用） */
    @Excel(name = "参与设备服务计费", readConverterExp = "1==是，0=否，用于标识是否计算设备使用费用")
    private Integer includeDeviceServiceFee;

    /** 逻辑删除标记（1=已删除，0=未删除，用于软删除） */
    @Excel(name = "逻辑删除标记", readConverterExp = "1==已删除，0=未删除，用于软删除")
    private Integer isDeleted;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setCardName(String cardName)
    {
        this.cardName = cardName;
    }

    public String getCardName()
    {
        return cardName;
    }

    public void setCardCode(String cardCode)
    {
        this.cardCode = cardCode;
    }

    public String getCardCode()
    {
        return cardCode;
    }

    public void setCardType(String cardType)
    {
        this.cardType = cardType;
    }

    public String getCardType()
    {
        return cardType;
    }

    public void setTableCategoryIds(String tableCategoryIds)
    {
        this.tableCategoryIds = tableCategoryIds;
    }

    public String getTableCategoryIds()
    {
        return tableCategoryIds;
    }

    public void setIsDefaultMemberCard(Integer isDefaultMemberCard)
    {
        this.isDefaultMemberCard = isDefaultMemberCard;
    }

    public Integer getIsDefaultMemberCard()
    {
        return isDefaultMemberCard;
    }

    public void setIssuedCardCount(Long issuedCardCount)
    {
        this.issuedCardCount = issuedCardCount;
    }

    public Long getIssuedCardCount()
    {
        return issuedCardCount;
    }

    public void setUsageRules(String usageRules)
    {
        this.usageRules = usageRules;
    }

    public String getUsageRules()
    {
        return usageRules;
    }

    public void setPointsRules(String pointsRules)
    {
        this.pointsRules = pointsRules;
    }

    public String getPointsRules()
    {
        return pointsRules;
    }

    public void setValidityPeriod(String validityPeriod)
    {
        this.validityPeriod = validityPeriod;
    }

    public String getValidityPeriod()
    {
        return validityPeriod;
    }

    public void setRemarks(String remarks)
    {
        this.remarks = remarks;
    }

    public String getRemarks()
    {
        return remarks;
    }

    public void setRechargeRules(String rechargeRules)
    {
        this.rechargeRules = rechargeRules;
    }

    public String getRechargeRules()
    {
        return rechargeRules;
    }

    public void setAvailableScope(String availableScope)
    {
        this.availableScope = availableScope;
    }

    public String getAvailableScope()
    {
        return availableScope;
    }

    public void setBonusAmountScope(String bonusAmountScope)
    {
        this.bonusAmountScope = bonusAmountScope;
    }

    public String getBonusAmountScope()
    {
        return bonusAmountScope;
    }

    public void setExcludedProducts(String excludedProducts)
    {
        this.excludedProducts = excludedProducts;
    }

    public String getExcludedProducts()
    {
        return excludedProducts;
    }

    public void setExcludedComboProducts(String excludedComboProducts)
    {
        this.excludedComboProducts = excludedComboProducts;
    }

    public String getExcludedComboProducts()
    {
        return excludedComboProducts;
    }

    public void setIncludeEmployeeServiceFee(Integer includeEmployeeServiceFee)
    {
        this.includeEmployeeServiceFee = includeEmployeeServiceFee;
    }

    public Integer getIncludeEmployeeServiceFee()
    {
        return includeEmployeeServiceFee;
    }

    public void setIncludeDeviceServiceFee(Integer includeDeviceServiceFee)
    {
        this.includeDeviceServiceFee = includeDeviceServiceFee;
    }

    public Integer getIncludeDeviceServiceFee()
    {
        return includeDeviceServiceFee;
    }

    public void setIsDeleted(Integer isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public Integer getIsDeleted()
    {
        return isDeleted;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("cardName", getCardName())
                .append("cardCode", getCardCode())
                .append("cardType", getCardType())
                .append("tableCategoryIds", getTableCategoryIds())
                .append("isDefaultMemberCard", getIsDefaultMemberCard())
                .append("issuedCardCount", getIssuedCardCount())
                .append("usageRules", getUsageRules())
                .append("pointsRules", getPointsRules())
                .append("validityPeriod", getValidityPeriod())
                .append("remarks", getRemarks())
                .append("rechargeRules", getRechargeRules())
                .append("availableScope", getAvailableScope())
                .append("bonusAmountScope", getBonusAmountScope())
                .append("excludedProducts", getExcludedProducts())
                .append("excludedComboProducts", getExcludedComboProducts())
                .append("includeEmployeeServiceFee", getIncludeEmployeeServiceFee())
                .append("includeDeviceServiceFee", getIncludeDeviceServiceFee())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("isDeleted", getIsDeleted())
                .append("phone", getPhone())
                .toString();
    }
}
